package ar.edu.untref.busqueda;

public class BusquedaBinariaClaudio {
	/**
	 * post: devuelve la posición de vector en la que se localizó la primera
	 * 
	 * ocurrencia del elemento buscado. Si no lo encuentra devuelve -1.
	 */
	public int buscar(int[] vector, int buscado) {

		int longitud = vector.length ;
		int encontrado = -1;
		int indiceIzquierdo = 0;
		int indiceDerecho = longitud - 1;
		int indiceMedio = indiceDerecho / 2;

		while (encontrado == -1 && (indiceIzquierdo <= indiceDerecho)) {
			
			indiceMedio = ( indiceIzquierdo + indiceDerecho ) / 2;
			System.out.println("[indice IZ " + indiceIzquierdo +"] [indice DE "
					+ indiceDerecho + "] [indiceMedio "
							+ indiceMedio +"] [buscado " + buscado
					+ "] [vector[] " + vector[indiceMedio] + "]" );
			
			
			
			if (buscado == vector[indiceMedio]) {
				encontrado = indiceMedio;
			} else if (buscado > vector[indiceMedio]) {
				indiceIzquierdo = indiceMedio + 1;
			} else {
				indiceDerecho = indiceMedio - 1;
			}

		}
		
		return encontrado;

	}
}
